home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / hity wydania / Ubuntu 9.10 PL / karmelkowy-koliberek-desktop-9.10-i386-PL.iso / casper / filesystem.squashfs / usr / include / linux / pmu.h < prev    next >
C/C++ Source or Header  |  2009-10-16  |  5KB  |  136 lines

  1. /*
  2.  * Definitions for talking to the PMU.  The PMU is a microcontroller
  3.  * which controls battery charging and system power on PowerBook 3400
  4.  * and 2400 models as well as the RTC and various other things.
  5.  *
  6.  * Copyright (C) 1998 Paul Mackerras.
  7.  */
  8.  
  9.  
  10. #define PMU_DRIVER_VERSION    2
  11.  
  12. /*
  13.  * PMU commands
  14.  */
  15. #define PMU_POWER_CTRL0        0x10    /* control power of some devices */
  16. #define PMU_POWER_CTRL        0x11    /* control power of some devices */
  17. #define PMU_ADB_CMD        0x20    /* send ADB packet */
  18. #define PMU_ADB_POLL_OFF    0x21    /* disable ADB auto-poll */
  19. #define PMU_WRITE_NVRAM        0x33    /* write non-volatile RAM */
  20. #define PMU_READ_NVRAM        0x3b    /* read non-volatile RAM */
  21. #define PMU_SET_RTC        0x30    /* set real-time clock */
  22. #define PMU_READ_RTC        0x38    /* read real-time clock */
  23. #define PMU_SET_VOLBUTTON    0x40    /* set volume up/down position */
  24. #define PMU_BACKLIGHT_BRIGHT    0x41    /* set backlight brightness */
  25. #define PMU_GET_VOLBUTTON    0x48    /* get volume up/down position */
  26. #define PMU_PCEJECT        0x4c    /* eject PC-card from slot */
  27. #define PMU_BATTERY_STATE    0x6b    /* report battery state etc. */
  28. #define PMU_SMART_BATTERY_STATE    0x6f    /* report battery state (new way) */
  29. #define PMU_SET_INTR_MASK    0x70    /* set PMU interrupt mask */
  30. #define PMU_INT_ACK        0x78    /* read interrupt bits */
  31. #define PMU_SHUTDOWN        0x7e    /* turn power off */
  32. #define PMU_CPU_SPEED        0x7d    /* control CPU speed on some models */
  33. #define PMU_SLEEP        0x7f    /* put CPU to sleep */
  34. #define PMU_POWER_EVENTS    0x8f    /* Send power-event commands to PMU */
  35. #define PMU_I2C_CMD        0x9a    /* I2C operations */
  36. #define PMU_RESET        0xd0    /* reset CPU */
  37. #define PMU_GET_BRIGHTBUTTON    0xd9    /* report brightness up/down pos */
  38. #define PMU_GET_COVER        0xdc    /* report cover open/closed */
  39. #define PMU_SYSTEM_READY    0xdf    /* tell PMU we are awake */
  40. #define PMU_GET_VERSION        0xea    /* read the PMU version */
  41.  
  42. /* Bits to use with the PMU_POWER_CTRL0 command */
  43. #define PMU_POW0_ON        0x80    /* OR this to power ON the device */
  44. #define PMU_POW0_OFF        0x00    /* leave bit 7 to 0 to power it OFF */
  45. #define PMU_POW0_HARD_DRIVE    0x04    /* Hard drive power (on wallstreet/lombard ?) */
  46.  
  47. /* Bits to use with the PMU_POWER_CTRL command */
  48. #define PMU_POW_ON        0x80    /* OR this to power ON the device */
  49. #define PMU_POW_OFF        0x00    /* leave bit 7 to 0 to power it OFF */
  50. #define PMU_POW_BACKLIGHT    0x01    /* backlight power */
  51. #define PMU_POW_CHARGER        0x02    /* battery charger power */
  52. #define PMU_POW_IRLED        0x04    /* IR led power (on wallstreet) */
  53. #define PMU_POW_MEDIABAY    0x08    /* media bay power (wallstreet/lombard ?) */
  54.  
  55. /* Bits in PMU interrupt and interrupt mask bytes */
  56. #define PMU_INT_PCEJECT        0x04    /* PC-card eject buttons */
  57. #define PMU_INT_SNDBRT        0x08    /* sound/brightness up/down buttons */
  58. #define PMU_INT_ADB        0x10    /* ADB autopoll or reply data */
  59. #define PMU_INT_BATTERY        0x20    /* Battery state change */
  60. #define PMU_INT_ENVIRONMENT    0x40    /* Environment interrupts */
  61. #define PMU_INT_TICK        0x80    /* 1-second tick interrupt */
  62.  
  63. /* Other bits in PMU interrupt valid when PMU_INT_ADB is set */
  64. #define PMU_INT_ADB_AUTO    0x04    /* ADB autopoll, when PMU_INT_ADB */
  65. #define PMU_INT_WAITING_CHARGER    0x01    /* ??? */
  66. #define PMU_INT_AUTO_SRQ_POLL    0x02    /* ??? */
  67.  
  68. /* Bits in the environement message (either obtained via PMU_GET_COVER,
  69.  * or via PMU_INT_ENVIRONMENT on core99 */
  70. #define PMU_ENV_LID_CLOSED    0x01    /* The lid is closed */
  71.  
  72. /* I2C related definitions */
  73. #define PMU_I2C_MODE_SIMPLE    0
  74. #define PMU_I2C_MODE_STDSUB    1
  75. #define PMU_I2C_MODE_COMBINED    2
  76.  
  77. #define PMU_I2C_BUS_STATUS    0
  78. #define PMU_I2C_BUS_SYSCLK    1
  79. #define PMU_I2C_BUS_POWER    2
  80.  
  81. #define PMU_I2C_STATUS_OK    0
  82. #define PMU_I2C_STATUS_DATAREAD    1
  83. #define PMU_I2C_STATUS_BUSY    0xfe
  84.  
  85.  
  86. /* Kind of PMU (model) */
  87. enum {
  88.     PMU_UNKNOWN,
  89.     PMU_OHARE_BASED,    /* 2400, 3400, 3500 (old G3 powerbook) */
  90.     PMU_HEATHROW_BASED,    /* PowerBook G3 series */
  91.     PMU_PADDINGTON_BASED,    /* 1999 PowerBook G3 */
  92.     PMU_KEYLARGO_BASED,    /* Core99 motherboard (PMU99) */
  93.     PMU_68K_V1,        /* 68K PMU, version 1 */
  94.     PMU_68K_V2,         /* 68K PMU, version 2 */
  95. };
  96.  
  97. /* PMU PMU_POWER_EVENTS commands */
  98. enum {
  99.     PMU_PWR_GET_POWERUP_EVENTS    = 0x00,
  100.     PMU_PWR_SET_POWERUP_EVENTS    = 0x01,
  101.     PMU_PWR_CLR_POWERUP_EVENTS    = 0x02,
  102.     PMU_PWR_GET_WAKEUP_EVENTS    = 0x03,
  103.     PMU_PWR_SET_WAKEUP_EVENTS    = 0x04,
  104.     PMU_PWR_CLR_WAKEUP_EVENTS    = 0x05,
  105. };
  106.  
  107. /* Power events wakeup bits */
  108. enum {
  109.     PMU_PWR_WAKEUP_KEY        = 0x01,    /* Wake on key press */
  110.     PMU_PWR_WAKEUP_AC_INSERT    = 0x02, /* Wake on AC adapter plug */
  111.     PMU_PWR_WAKEUP_AC_CHANGE    = 0x04,
  112.     PMU_PWR_WAKEUP_LID_OPEN        = 0x08,
  113.     PMU_PWR_WAKEUP_RING        = 0x10,
  114. };
  115.     
  116. /*
  117.  * Ioctl commands for the /dev/pmu device
  118.  */
  119. #include <linux/ioctl.h>
  120.  
  121. /* no param */
  122. #define PMU_IOC_SLEEP        _IO('B', 0)
  123. /* out param: u32*    backlight value: 0 to 15 */
  124. #define PMU_IOC_GET_BACKLIGHT    _IOR('B', 1, size_t)
  125. /* in param: u32    backlight value: 0 to 15 */
  126. #define PMU_IOC_SET_BACKLIGHT    _IOW('B', 2, size_t)
  127. /* out param: u32*    PMU model */
  128. #define PMU_IOC_GET_MODEL    _IOR('B', 3, size_t)
  129. /* out param: u32*    has_adb: 0 or 1 */
  130. #define PMU_IOC_HAS_ADB        _IOR('B', 4, size_t) 
  131. /* out param: u32*    can_sleep: 0 or 1 */
  132. #define PMU_IOC_CAN_SLEEP    _IOR('B', 5, size_t) 
  133. /* no param, but historically was _IOR('B', 6, 0), meaning 4 bytes */
  134. #define PMU_IOC_GRAB_BACKLIGHT    _IOR('B', 6, size_t) 
  135.  
  136.